﻿using System;
using System.Collections;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace LeafTransmission.Utils
{
    /// <summary>
    /// 聊天相关信息操作类
    /// </summary>
    internal class ChatInfoOperation
    {
        // 聊天对象
        public string ChatPartner { get; set; }

        // 存储消息的缓存列表, 暂存数据的
        public ArrayList ChatMessage { get; } = new ArrayList();

        // 消息显示的列表
        public ListBox ListBoxContainer { get; set; }

        public ChatInfoOperation(string chatPartner, ListBox listBoxContainer)
        {
            ChatPartner = chatPartner;
            ListBoxContainer = listBoxContainer;
        }


        /// <summary>
        /// 发送消息的界面控制方法
        /// 在这里进行消息的格式化
        ///     对方消息格式为 [yy/MM/dd hh:mm]# message  背景颜色颜色为黑色
        ///     己方消息格式: [yy/MM/dd hh:mm](me)# message 背景颜色为绿色
        ///     其中消息颜色在  ListBox的 lstMessageBox_DrawItem回调函数中通过 是否为myself消息进行设置
        /// </summary>
        /// <param name="message">具体的消息</param>
        /// <param name="isMySelf">该消息是否为自己发送给对方的</param>
        /// <returns></returns>
        public void AddMessageToList(string message, bool isMySelf)
        {
            string currentDateTime = DateTime.Now.ToString("yyyy/MM/dd HH:mm");

            if (isMySelf)
            {
                message = "[" + currentDateTime + "](me)#" + message;
            }
            else
            {
                message = "[" + currentDateTime + "]#" + message;
            }

            ChatMessage.Add(message);
            ListBoxContainer.Items.Add(message);
            ListBoxContainer.TopIndex = ListBoxContainer.Items.Count - 1;            
        }

        /// <summary>
        /// 移除与当前用户的所有消息
        /// return true 如果有数据并移除成功
        /// return false 如果没有数据并移除
        /// </summary>
        /// <returns>是否移除成功</returns>
        public bool ClearMessage()
        {
            if (ChatMessage != null && ListBoxContainer != null)
            {
                ChatMessage.Clear();
                ListBoxContainer.Items.Clear();
                return true;
            }
            return false;
        }

        /// <summary>
        /// 通过消息索引移除某条消息
        /// </summary>
        /// <param name="index"></param>
        /// <returns></returns>
        public bool RemoveMessageByIndex(int index)
        {
            if (index > 0 && ChatMessage != null && ListBoxContainer != null)
            {
                ChatMessage.RemoveAt(index);
                ListBoxContainer.Items.RemoveAt(index);
                return true;
            }
            return false;
        }
    }
}
